﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Business.Operations;
using Entity.Framework;

namespace HPDMAS.UserControls
{
    public partial class KullaniciKayit : System.Web.UI.UserControl
    {
        private int _sehirId;
        private string _sehirAdi;
        private DateTime _dogumTarihi;
        private int _kullaniciId;
        private string _klasmanAdi;
        private int _klasmanId;
        private string _rolAdi;
        private int _rolId;
        private string _lisansNo;
        private string _parola;
        private string _kullaniciAdi;
        private string _kullaniciSoyadi;
        private string _tcKimlikNo;
        private string _ePosta;
        private string _ePostaTekrar;
        private bool deger;
        /// <summary>
        /// Entity Nesneleri
        /// </summary>
        Kullanici kullanici;
        KullaniciFaal kullaniciFaal;
        KullaniciNfs kullaniciNfs;
        KullaniciIletisim kullaniciIletisim;
        KullaniciHesap kullaniciHesap;
        KullaniciFizik kullaniciFizik;
        KullaniciTahsil kullaniciTahsil;

        //bool guvenlikKoduOnay;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblValidateSehir.Visible = false;
                lblValidateKlasman.Visible = false;
                lblValidateUniqueLisansNo.Visible = false;
                lblValidateUniqueTcKimlikNo.Visible = false;
                lblValidateUniqueEposta.Visible = false;
                ddlSehir.SelectedIndex = 0;
                ddlKlasman.SelectedIndex = 0;

                ddlSehir.DataSource = SehirOperation.SehirAdiGetAll();
                ddlSehir.DataBind();

                ddlKlasman.DataSource = KlasmanOperation.KlasmanAdiGetAll();
                ddlKlasman.DataBind();
            }
        }

        public void ParametreAktar()
        {
            _lisansNo = txtLisansNo.Text;
            _parola = txtParola.Text;
            _sehirAdi = ddlSehir.SelectedValue;
            if (_sehirAdi != "-1")
            {
                _sehirId = SehirOperation.SehirIdGetBySehirAdi(_sehirAdi);
            }
            else
            {
                lblValidateSehir.Visible = true;
            }

            _klasmanAdi = ddlKlasman.SelectedValue;
            _klasmanId = KlasmanOperation.KlasmanIdGetByKlasmanAdi(_klasmanAdi);


            if (_klasmanAdi != "-1" && _klasmanAdi == ddlKlasman.Items.FindByText("İl Gözlemcisi").ToString())
            {
                _rolAdi = "gozlemci";
            }
            else if (_klasmanAdi != "-1")
            {
                _rolAdi = "hakem";
            }
            else
            {
                lblValidateKlasman.Visible = true;
            }

            _rolId = RolOperation.RolIdGetByRolAdi(_rolAdi);
            _tcKimlikNo = txtTcKimlikNo.Text;
            _kullaniciAdi = txtAdin.Text;
            _kullaniciSoyadi = txtSoyadin.Text;
            _dogumTarihi = Convert.ToDateTime(txtDogumTarihi.Text.Trim());
            _ePosta = txtEposta.Text;
            _ePostaTekrar = txtEpostaTekrar.Text;
        }

        public bool LisansNoVarMi()
        {
            if (KullaniciOperation.KullaniciLisansNoGetByKullaniciLisansNo(_lisansNo) == null)
            {
                deger = false;
                lblValidateUniqueLisansNo.Text = "";
                lblValidateUniqueLisansNo.Visible = false;
            }
            else
            {
                deger = true;
                lblValidateUniqueLisansNo.Text = "Bu Lisans No ile daha önceden sisteme kayıt olunmuş.";
                lblValidateUniqueLisansNo.Visible = true;
            }
            return deger;
        }

        public bool TcKimlikNoVarMi()
        {
            if (KullaniciNfsOperation.KullaniciNfsTcKimlikNoGetByKullaniciNfsTcKimlikNo(_tcKimlikNo) == null)
            {
                deger = false;
                lblValidateUniqueTcKimlikNo.Text = "";
                lblValidateUniqueTcKimlikNo.Visible = false;
            }
            else
            {
                deger = true;
                lblValidateUniqueTcKimlikNo.Text = "Bu TC Kimlik No ile daha önceden sisteme kayıt olunmuş.";
                lblValidateUniqueTcKimlikNo.Visible = true;
            }
            return deger;
        }

        public bool EpostaVarMi()
        {
            if (KullaniciIletisimOperation.KullaniciIletisimEpostaGetByKullaniciIletisimEposta(_ePosta) == null)
            {
                deger = false;
                lblValidateUniqueEposta.Text = "";
                lblValidateUniqueEposta.Visible = false;
            }
            else
            {
                deger = true;
                lblValidateUniqueEposta.Text = "Bu E-posta ile daha önceden sisteme kayıt olunmuş.";
                lblValidateUniqueEposta.Visible = true;
            }
            return deger;
        }

        public void KullaniciKaydet()
        {
            if (_rolId != 0 && _sehirId != 0 && _ePosta != null && _ePosta == _ePostaTekrar)
            {
                if (LisansNoVarMi() == false && TcKimlikNoVarMi() == false && EpostaVarMi() == false && _dogumTarihi != null)
                {
                    kullanici = new Kullanici();
                    kullanici.RolID = _rolId;
                    kullanici.SehirID = _sehirId;
                    kullanici.KlasmanID = _klasmanId;
                    kullanici.KullaniciLisansNo = _lisansNo;
                    kullanici.KullaniciParola = _parola;
                    kullanici.KullaniciKayitTarihi = DateTime.Now;
                    kullanici.DegisiklikTarihi = DateTime.Now;
                    KullaniciOperation.KullaniciInsert(kullanici);

                    _kullaniciId = KullaniciOperation.KullaniciIdGetByKullaniciLisansNo(_lisansNo);

                    //KullaniciNfsOperation.KullaniciNfsInsert(_tcKimlikNo, _kullaniciId, null, null, null, _kullaniciAdi, _kullaniciSoyadi, null, _dogumTarihi, null, null, null, null, null, null, null, null, null);
                    kullaniciNfs = new KullaniciNfs();
                    kullaniciNfs.KullaniciID = _kullaniciId;
                    kullaniciNfs.KullaniciNfsTCKimlikNo = _tcKimlikNo;
                    kullaniciNfs.KullaniciNfsAdi = _kullaniciAdi;
                    kullaniciNfs.KullaniciNfsSoyadi = _kullaniciSoyadi;
                    kullaniciNfs.KullaniciNfsDogumTarihi = _dogumTarihi;
                    kullaniciNfs.DegisiklikTarihi = DateTime.Now;
                    KullaniciNfsOperation.KullaniciNfsInsert(kullaniciNfs);

                    //KullaniciIletisimOperation.KullaniciIletisimInsert(_kullaniciId, null, _ePosta, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                    kullaniciIletisim = new KullaniciIletisim();
                    kullaniciIletisim.KullaniciID = _kullaniciId;
                    kullaniciIletisim.KullaniciEposta = _ePosta;
                    KullaniciIletisimOperation.KullaniciIletisimInsert(kullaniciIletisim);

                    kullaniciFaal = new KullaniciFaal();
                    kullaniciFaal.KullaniciID = _kullaniciId;
                    KullaniciFaalOperation.KullaniciFaalInsert(kullaniciFaal);

                    kullaniciHesap = new KullaniciHesap();
                    kullaniciHesap.KullaniciID = _kullaniciId;
                    KullaniciHesapOperation.KullaniciHesapInsert(kullaniciHesap);

                    kullaniciFizik = new KullaniciFizik();
                    kullaniciFizik.KullaniciID = _kullaniciId;
                    KullaniciFizikOperation.KullaniciFizikInsert(kullaniciFizik);

                    kullaniciTahsil = new KullaniciTahsil();
                    kullaniciTahsil.KullaniciID = _kullaniciId;
                    KullaniciTahsilOperation.KullaniciTahsilInsert(kullaniciTahsil);

                    deger = true;
                }
                else
                {
                    deger = false;
                }
            }
        }

        protected void btnKaydol_Click(object sender, EventArgs e)
        {
            ParametreAktar();
            KullaniciKaydet();
            Session["kaydedildiMesaji"]="Sisteme başarıyla kaydoldunuz.";


            if (deger == true)
            {
                Response.Redirect("~/Uyelik/KayitTamamlandi.aspx");
            }
        }

        protected void ddlSehir_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblValidateSehir.Visible = false;
        }

        protected void ddlKlasman_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblValidateKlasman.Visible = false;
        }

        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            try
            {
                DateTime.ParseExact(args.Value, "dd.MM.yyyy",
                    System.Globalization.DateTimeFormatInfo.InvariantInfo);
                args.IsValid = true;
            }
            catch
            {
                args.IsValid = false;
            }
        }
    }
}